Data access and management system as well as a method for data access and data management for a computer system

ABSTRACT

The present invention permits improved data access and improved data management in a computer system. To this end, data are divided into individual partial data (F) and stored in cells (Z) of storage devices (C). In such a way that the partial data (F) being accessed and managed are present in the computer system in a redundant manner. Computer units (CL) are able to access the redundantly stored data. The fact that they are stored in the storage devices (C) ensures that the computer units (CL) accessing said data are supplied more rapidly. This is achieved in particular owing to the fact that the redundantly stored data are accessed in accordance with parameters of data transmissions between the computer units (CL) and the data storage devices (C) and that, in accordance with said data transmission parameters, the redundantly stored data are moved to and from the data storage devices (C) by corresponding copy and delete operations.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/858,723, filed Sep. 18, 2015, which is a continuation of U.S.application Ser. No. 14/106,636, filed Dec. 13,2013, (now abandoned)which is a continuation of U.S. application Ser. No. 13/029,267, filedFeb. 17, 2011, which issued as U.S. Pat. No. 8,656,125 on Feb. 18,2014,which is a continuation of U.S. application Ser. No. 11/188,025, filedJul. 23, 2005, which issued as U.S. Pat. No. 7,904,680 on Mar. 8,2011,which is a continuation of U.S. application Ser. No. 09/903,431, filedJul. 10,2001, which issued as U.S. Pat. No. 7,000,084 on Feb. 14,2006(and reissued as U.S. Patent No. VS. RE 40,521 on Sep. 23, 2008, whichis a continuation of International application PCT/EP2000/000141, filedJan. 11,2000, which claims priority to German Patent Application Number199 00 636.9, filed on Jan. 11,1999 and entitled “DATA ACCESS ANDMANAGEMENT SYSTEM AS WELL AS A METHOD FOR DATA ACCESS AND DATAMANAGEMENT FOR A COMPUTER SYSTEM”. The entire contents of each of thereferenced applications are incorporated by reference herein.

FIELD OF THE INVENTION

The invention generally relates to a data access and management systemas well as to a method for data access and data management for acomputer system. In particular, the present invention relates to asystem and a method for optimising the access to data and theirprocessing in distributed and networked computer structures.

DESCRIPTION OF THE PRIOR ART

The ever increasing use of distributed and networked computer structuresand arrangements has the consequence that data and functionalities fordata management purposes are no longer provided or utilised,respectively, by consistent computer systems, but by various distributescomputer systems which are internetworked. In conventional distributedand networked computer structures and arrangements data andfunctionalities are generally provided by a central computer system, aso-called server, or an accumulation of central computer systems,so-called server clusters. Other computer systems, so-called clients,such as for example, personal computers are connected e.g. via networksor busses with the central computer system in order to access data andfunctionalities. In this context, various problems occur which limit thesupply of clients with data and/or functionalities, in particular, ifthe access to a central computer system is done by several clients in ashort period of time or even simultaneously. An example for this iscomputer games, which are supplied to several players via the Internet

Due to the fact that only one central computer system (server) is used,its failure results in that the clients can no longer access provideddata and functionalities. The failure of network areas, too, whichconnect the server with the clients, also leads to a total failure ofthe entire computer structure.

Moreover, the transmission times from the server to individual clientsdiffer greatly in part because the connection quality to the clientsvaries e.g. due to various distances between the server and the clientsas well as different transmission performances in various areas of thenetwork. In particular, with interactive operations of several clientsin connection with the server, such an inadequate transmissioncharacteristic often leads to an unsatisfactory supply of individualclients with date/functionalities. In this context, the so-called “lags”must be mentioned which affect the communication between the server endthe clients.

SUMMARY OF THE INVENTION

It is an object of the present invention to eliminate tbc abovementioned problems of the known state of the art. In particular, it isan object of the invention to optimise the transmission quality betweenclients and means of a networked distributed computer structure whichprovide data in such a manner that each client is provided with therespectively requested data in a desired application-specific manner.Preferably, the invention is to enable an as rapid as possible supplywith data/functionalities, whereby it is additionally to be ensured thatthe transmissions are effected as fault-tolerantly as possible.

In addition, the present invention secures the operability of adistributed networked computer system in the case of the failure of dataproviding mesas of the computer structure. The invention is also tosecure the operability of a distributed networked computer system in thecase of the failure of Individual areas of the networks via which thedata providing means and clients are connected with each other.

Furthermore, the invention is to enable that clients are only providedwith current data. The invention also intends to reduce the requiredtransmission capacities of a networked distributed computer system.

In the inventive system according to the present invention, the dataprovided in a computer system is stored in a redundant manner in thedata storage means, depending on prespecified parameters of the datatransmission between data storage means and computer units, and thecomputer units access one of the data storage means as a function of thedetermined pre-specified parameters. In this manner it is made possibleto optimise data transmissions between the data storage means and thecomputer units in the desired application-specific manner in order to becarried out more rapidly and in a manner involving fewer faults.

In addition, the data storage means comprise control unit forcontrolling the data access and the data management in order to workindependent of other means of the computer system. This reduces thequantity of the data to be transmitted in the inventive system andincreases the fault tolerance of the inventive system because the dataare not processed centrally.

For achieving an additional optimisation it is to be preferred that thedata storage means copy redundantly stored data in the system among eachother as a function of the determined parameters of data transmissionsbetween the individual data storage means and the computer unit enddelete the data in the data storage means in which it had been storedbeforehand. Data can thus be shifted in the inventive system from onedata storage means to other data storage means, whose parameters of thedata transmission enable a higher degree of optimisation of the dataaccess and the data management for the respective application case ofthe invention.

Moreover, it is to be preferred that the data storage means process thestored data independently from the computer unit. In this manner datacan be processed in a decentralised way whereby increased data integrityand an increased fault tolerance as well as a relief of individualsystem components is achieved. In another embodiment the data in thesystem is divided into data subsets, and the data storage means aredivided into cells in such a manner that each of the data subsets to bestored in a redundant manner is stored in one of the cells each of thecorresponding data storage means in order to only store that data in aredundant manner which is currently required.

In addition, it is advantageous that the data storage means are dividedinto cells depending on data transmission parameters in order to furtheroptimise the data transmissions within the inventive system.

In order to carry out the data access and the data management in a moreefficient manner each cell may comprise additional data which relates toparameters of data transmissions between the individual data storagemeans and the computer unit, and/or neighbouring cells, and/or cellswhich comprise data which is stored in the system in a redundant manner.

In addition, it is possible to use cells which can interchangeadditional data which is used for the data access and the datamanagement. Thus, the information for data access and data management tobe transmitted in the inventive system is reduced further.

The cells in special data storage means can be designed in such a mannerthat the parameters of data transmission between the individual datastorage means and the computer unit are identical for the cells of adata storage means in order to achieve a consistent data access for theindividual data storage means.

It is also possible to use computer units which output data for storagein the data storage means and/or process data stored in the data storagemeans in order to relieve the data storage means.

For processing the data independent of the inventive system, thecomputer units can also be connected with one or several users in orderto transmit the data from the data storage means and/or to be controlledby the user. Such a user is preferably a personal computer, and/or acentral processing unit of a computer and/or another data storage means.

In this manner, the computer unit can also be a system which providesInternet services such as e.g. data base access operation and computergames. The computer unit can also be suited to immediately accessindividual cells of the data storage means, which relieves theindividual data storage means of data access and data management tasks.

In particular, the prespecified parameters of data transmissions betweenthe individual data storage means and the computer unit can comprise theduration of the transmission, and/or the fault rate, and/or the durationof data processing operations of the individual data storage means priorto the transmission of the data. In this manner, data can be accessedmore rapidly and data is provided which is less faulty.

The individual components of the inventive system according to anembodiment of the present invention are connected with each other viadata transmission means, which can comprise electrically conductiveconnections, and/or bus systems, and/or computer networks, and/or wiredor wireless (mobile) telephone networks, and/or the Interact. Thepresent invention is thus suited for each computer structure andarrangement as well as for each computer system which utilisesdistributed and networked means.

When using the present invention, it is therefore possible to build adatabase system or a computer structure for data access and datamanagement with an inventive database system or an inventive computerstructure being able to be built from components which are arrangedlocally in a neighbouring relation.

Moreover, the present invention can be used in a system for a computergame which is provided via the Internet. In this case, it is to bepreferred that at least one computer unit is an Internet serviceprovider in order to integrate the present invention into existingcomputer structures of the Internet and in order to enable Internetusers an inventive access to the data.

In particular, the invention is suited for interactive computer gamesfor use by at least two users in order to ensure an optimised supply ofthe individual user with data required for the computer game, wherebyeach user can be connected with one computer unit.

Preferably, data for executing the computer game is transmitted from thecomputer units to the users so that the computer game can also becarried out—at least partially—independent of the computer units.Another relief of the computer units and the data storage means can beobtained if the users process the received data for executing thecomputer game and transmit it back to the corresponding computer units.

Moreover, the inventive system for a computer game can compriseadditional means for the detection of prespecified parameters of thedata transmission between the computer units and the respectivelyconnected users in order to additionally optimise the data access andthe data management. Preferably, these prespecified parameters comprisethe duration of the transmission, and/or the fault rate, and/or theduration of data processing operations of the individual computer unitsand/or the individual users prior to the transmission of the data.

It is thus possible to store the data for executing the computer game ina redundant manner also as a function of the determined prespecifiedparameters of the data transmission between the computer units and theusers which are connected therewith.

Furthermore, the computer units can receive control data for executingthe computer game from the respective users in order to enable improvedinteractions of the individual users.

This control data or equivalent data can then be output by the computerunits to the data storage means. In this manner it becomes possible thatthe computer units process data for executing the computer game,depending on the control data, and/or the data storage means processdata for executing the computer game, depending on the control data oron data equivalent to the control data, whereby a more efficient dataaccess and a more efficient data management is achieved.

Similarly, with a method of the present invention, data is stored in aredundant manner in at least two of at least two data storage meansdepending on determined parameters of the data transmission between thedata storage means and computer units, with the access to the storeddata by the computer units being effected as a function of thedetermined parameters of the data transmission.

The data access and the data management are preferably controlled by thedata storage means.

In an embodiment of the inventive method the redundantly stored data arecopied among each other by the data storage means as a function of thedetermined parameters of data transmissions between the individual datastorage means and the computer unit and deleted in the data storagemeans in which the copied data has been stored beforehand.

In addition, it is possible to process the stored data by the datastorage means independent of the computer unit in order to relieveindividual means and to achieve a higher reliability of the inventivemethod.

In order to achieve an application-specific and thus optimised storageof the data can be divided into data subsets, with the data subsets tobe stored in a redundant manner being stored in cells of the individualdata storage means. Preferably, the division into data subsets and thestorage in cells is carried out as a function of the data transmissionparameters.

A further optimisation can be obtained if additional data for dataaccess and data management is stored in the cells, which relate to theparameters of data transmissions between the individual data storagemeans and the computer unit, and/or neighbouring cells, and/or cellswhich comprise the data redundantly stored in the system.

Moreover, additional data for data access and data management can beexchanged between the cells of the data storage means. Preferably, theaccess to data of cells of a data storage means has identical datatransmission parameters in order to ensure a consistent data access forthe individual data storage means.

For the relief of the entire system it is also possible that thecomputer unit outputs data for storage in the data storage means and/orthe data stored in the data storage means is processed by the computerunit.

The data is preferably transmitted by the computer unit to a user and/orthe computer unit is controlled by the user in order to process dataindependent of the execution of the inventive method and to additionallycontrol the sequence of the inventive method. The inventive method isthus capable of providing Internet services.

In order to achieve a more efficient data access and a more efficientdata management, the access can also be made directly to the data ofindividual cells of the data storage means.

Further it is to be preferred that the determination of the prespecifiedparameters of data transmissions between the individual data storagemeans and the computer unit comprises the determination of the durationof the transmission, and/or the fault rate, and/or the duration of dataprocessing operations of the individual data storage means prior to thetransmission of the data in order to access data more rapidly and/orreliably.

In this manner it is possible to provide a method for a database systemor a computer structure as well as a method for an Internet computergame wherein in the latter case the access to data in the data storagemeans preferably comprises the employment of an Internet serviceprovider.

Moreover, the method can enable at least two users to access thecomputer game, with the computer game being an interactive computergame.

The data for executing the computer game from the computer units can betransmitted to the respective users. Preferably, the data received bythe users are processed by the users and transmitted back to thecorresponding computer units in order to relieve the computer units andthe data storage means and to optimise the execution of the computergame.

In another embodiment, prespecified parameters of the data transmissionbetween the computer units and the respective users connected therewithare determined in addition, in order to carry out the data access andthe data management with the inventive method also under considerationof these parameters.

It is further to be preferred, that the determination of theprespecified parameters of data transmissions between the computer unitsand the users which are connected therewith comprises the determinationof the duration of the transmission, and/or the fault rate, and/or theduration of data processing operations of the individual computer unitsand/or the individual users prior to the transmission of the data.

In this manner the redundant storage of the data for the execution ofthe computer game can also be carried out as a function of thedetermined prespecified parameters of the data transmission between thecomputer units and the respective users connected therewith.

A more efficient execution of interactive operations of the computergame can be achieved if control data for the execution of the computergame is additionally transmitted by the users to the correspondingcomputer units. Preferably, the control data or equivalent data from thecomputer units is also transmitted to the data storage means.

Finally, it is possible to process the data for executing the computergame as a function of the control data from the computer units and/or toprocess the data for executing the computer game as a function of thecontrol data or the data equivalent to the control data from the datastorage means. In this manner, the individual users are relieved and theredundantly stored data is processed by the data storage means whichensure a desired data transmission.

By an inventive replacement of individual failed cells it is possible tocompensate for connection errors and in the case of a failure ofindividual areas of a distributed networked computer structure toutilise areas which retain the functionality of the entire computerstructure, in that data is present in the computer system in a redundantmanner. Due to the fact that the invention allows for monitoring theused data, the consistency of the available data is also ensured in thismanner.

Furthermore, the use of the present invention automatically optimisesthe connection quality between clients and data providing means of acomputer structure so that poor transmission qualities (e.g. lowtransmission rate, lags, . . . ) are automatically compensated.

For this purpose, individual area of a distributed networked computersystem, e.g. individual memory areas, ere scaled without interruption ofthe operation. This means that such individual area of the inventivesystem can be added or removed at any time.

The present invention also enables to replace individual failed areas ofa distributed networked computer system by other areas withoutinterruption of the operation. This is possible because the inventiondocs not require a central connection between individual areas of thecomputer system, which prevents limitations of the functionality of theinventive system due to failures (e.g. technical defects). In addition,the invention ensures a higher data integrity because the data is notstored centrally.

It is also possible to reduce the quantity of the data to be managed byindividual areas of a networked distributed computer system in thismanner. The consequence of this is that the required transmissioncapacities between individual areas of the inventive system can bereduced, too.

Moreover, further components can be added to the inventive systemwithout having to modify its principal structure.

The inventive approach did in fact originate in particular in thesolution of the above mentioned problems in the realisation of(interactive) computer games for the Internet. However, it mustexplicitly be emphasised that the present invention is not limited tosuch applications, but can be employed for any computer system and anycomputer structure utilising distributed networked means which providedata.

IN THE DRAWINGS

FIG. 1 is a schematic representation of a preferred embodiment of acomputer structure according to the present invention;

FIG. 2 shows a schematic representation of a data structure as well asits division and assignment to cells according to the present invention;

FIG. 3 is a schematic representation of another preferred embodiment ofa computer structure according to the present invention; and

FIG. 4 is a schematic representation of a section of the preferredembodiment of FIG. 1 for the explanation of operations, which are usedfor executing the invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The terms used in the following text will now be explained withreference to FIGS. 1 and The entire data quantity GD which is used inthe context of the invention is divided into individual data subsetswhich are referred to as field F.

The position of each field F in the entire data quantity GD is describedby a unique field position or identification fieldIF (fieldID), with theentire data quantity GD being capable of being divided one ormulti-dimensionally. If, for example, the entire data quantity GD isdivided three-dimensionally, each field position FieldID can bedescribed by x, y, z.

A cell Z is the smallest unit for data storage which stores exactly onefield F. A cell Z also contains other information which will be coveredin detail later.

A cluster C comprises one cell Z or is an accumulation of several cellsZ. A cluster C can, for example, be formed by an individual computer oron integrated circuit which manages individual or several cells Z.Moreover, a cluster C can operate as a higher-level control unit for thecells Z contained in it

All clusters C which are combined for the representation of the entiredata stock GD form a cluster pool or a cluster compound CV. Theindividual clusters C are connected via a network N, with each cluster Chaving a unique address. A cluster compound CV can thus be formed bynetworking individual computers forming clusters and/or by connectingindividual integrated circuits forming clusters.

Within the cluster compound each cluster is identified by a uniqueidentification ClusterID which can be a single number or a tuple.Individual clusters in the compound contain a table of their neighbours(neighbour table) in order to be able to relay certain messages tocertain clusters. In this context, a neighbour is another cluster with anext higher or lower identification ClusterID. The number of cells Zwhich belong to a cluster can vary between 0 and an upper limit maxcc,where maxcc can be different for each cluster C in the cluster compountCV. The number of cells Z which are actually included in a cluster C isindicated as ncc. In addition, each cell Z has a unique identificationZellID (cellID) within a cluster C.

Moreover, cells Z of a cluster C can exchange information among eachother without sending messages via the network N, which enables areliable message transmission within a cluster C. In addition, it is tobe preferred that all cells Z of a cluster C are provided with the sameconnection quality, i.e. though the connection to the network N can bedifferent between the individual clusters C, it is the same for allcells Z of a cluster C.

As described, a cluster C comprises between 0 and maxcc cells Z. Eachmemory location of a cluster C which can store a cell Z is referred toas slot S. A slot S can be full, i.e. it stores the data of a cell Z, orempty, i.e. it represents no cell Z. Therefore, the clusters C from FIG.2 comprise only one full slot S each. The identification SlotID of eachslot S corresponds to the identification ZellID which a cell Z would beassigned in this memory location.

A client CL (e.g. Internet provider, personal computer, networkcomputer, and the like) is a unit communicating via the network N whichrequests data, processes data and/or orders to store the modified data.In the present invention, no assumption whatsoever concerning the actualrealisation of the network N is made. As network N any means whichtransmit data can be employed, such as e.g. proprietary busses, localnetworks, or the Internet. The invention does also not assume that thenetwork N ensures the transmission of all data, so that acknowledgementsconcerning a data transmission to the respective sender are notrequired, and that the network N transmits data according to its sendingtime.

As will be presented in the following and is shown in FIG. 2, theinvention is based, among other things, on a distribution of the entiredata GD or the fields F, respectively, to several cells Z of identicalcontents, i.e. a single field F is stored in several cells Z in aredundant manner. The Number of cells Z which store and manage a certainfield F is specified as nm and is the same throughout the entire clustercompound CV, with each of the nm cells Z being referred to as mirror SPfor the field F which is stored in the nm cells Z. In the followingexplanation of the invention nm=3 is assumed, with this value servingonly for illustrating the invention and to be specifically selected foreach application case.

A response AK is the response to a request RQ. The contents and functionof the individual requests RQ and responses AK depends on thetransmitted data.

A message MSG is a data quantity which is exchanged between cells Z,clusters C and clients CL. It is the task of the network N to transmitthe messages MSG. Due to the fact that the sender of a message MSG doesnot receive an acknowledgement of a successful transmission, messagesMSG can get lost. It is also possible that two messages MSG arrive at adestination after different times. Now the principal procedure with thepresent invention and individual actions or operations, respectively,for carrying out the invention will be described.

The entire data quantity is divided into individual fields F. Such adivision can, for example, be effected two-dimensionally orthree-dimensionally. For example, a chessboard could be divided into 8*8fields F, with each field F containing the information on the respectivechessboard square, e.g. which chess piece is located there. Analogously,a three-dimensional space, too, can be represented by fields F. It isalso possible, however, to divide an image into individual image areasor a text into individual words or character(s) (strings) which areassigned lo individual fields F. The contents of the fields F isapplication-specific and is not relevant in the present invention. Theindividual fields F are then stored in nm cells Z, with each cell Zstoring a corresponding field F, i.e. the actual data, as well asfurther information which preferably relates to references toneighbouring fields F. This information permits a data reduction becausein this manner, “empty” fields F need not be stored and not each field Fmust be assigned a cell Z.

Several cells Z are then combined to a cluster C, and all clusters C inturn are combined to a cluster compound CV. An essential characteristicof the invention is that each cell in the cluster compound CV isavailable in a redundant manner, i.e. nm times in nm clusters C. Thus,each field F is nm limes stored in these cells Z, and each of thesecells Z is referred to as mirror SP with respect to the field F storedtherein. In addition, each cell Z contains information in which clustersC and/or in which cells Z of the corresponding dusters C the other nm−1cells Z are located.

In addition, each cell Z contains further information which preferablycomprises indications on the data transmission quality in the dustercompound CV and with respect to the clients CL, e.g. transmissionquality, transmission rate, and the like. This information is updatedwhen the cells Z are accessed.

In order to receive the contents of a field F, a client CL sends arequest via the network N to all cells Z and/or clusters C, whichinclude the desired field F, i.e. to all cells Z which are mirrors SP ofthe desired field F. It depends on the parameters of the datatransmissions to the individual cells Z and/or clusters C as well asback to the clients CL, from which cell Z or which cluster C therequesting client CL will receive a response. Preferably, the requestingclient CL receives a response from the cell Z and/or the cluster C,which realise the fastest data transmission of the respective timeand/or which are capable of carrying out a processing of the data morerapidly prior to its sending lo the requesting client CL.

All cells Z and/or clusters C and/or clients CL periodically check theirapplicable parameters for data transmissions. In periodic intervals orsubsequently to specified actions, all cells Z and/or clusters C and/orclients CL check the parameters for data transmissions, which areapplicable to the used cells Z. If the checked parameters do not meetspecified limits, or if other cells Z and/or clusters C comprise betterdata transmission parameters, the checking cells Z will try to shift itsdata to these other cells Z and/or clusters C in order to improve thedata transmission parameters applicable for this data. In this manner,the inventive cluster compound CV optimises itself automatically duringoperation with respect to data transmissions.

Certain requests of a client CL, such as e.g. a write request WriteRQ asdescribed below are synchronised between all mirrors SP of therespective field F. In this manner, failed mirrors SP are identified. Inaddition, extra checks are carried out at periodic intervals and/or byclients CL after the receipt of response AK. This, too, identifiesfoiled mirrors SP and/or mirrors which are no longer relevant Thesemirrors SP are either replaced by other mirrors SP, or a cell Z or acluster C or a client CL substitutionally generates new mirrors SP, orthe present defects are remedied by means of methods described below. Inthis manner, the cluster compound CV is fault tolerant against thefailure of individual cells Z and/or whole clusters C.

In addition, requesting clients CL can assign individual cells Z and/orclusters C special processing functions which are executed independentof the mode of operation of the clients CL. A client CL, for example,can instruct a cell Z or a cluster C to change the data of a field F incertain intervals. This characteristic is of particular importance ifthe present invention is employed in connection with computer gameswhich are executed under real-lime conditions via a network, e.g. theInternet, in order to reduce the data quantities to be transmitted andto optimise the interactive operations in the execution of a computergame.

Data between the individual clients CL, clusters C, and cells Z aretransmitted by using a certain protocol This means that in addition tothe transmitted data, further prespecified data are sent and received bythe individual clients CL, clusters C, and cells Z in order to initiatedesired operations or to react in a desired manner ns described below.All clients CL, clusters C, and cells Z carry out the necessaryoperations in order to achieve the desired functionality of thecorresponding cluster compound CV. If the invention is employed as shownin FIG. 1 for providing computer games via the Internet, then thenetwork N is the Internet and the client CL is the computer system whichoperates as Internet provider. The individual clusters C comprise memoryunits of the client CL and storage means of other computer systems whichare distributed over the computer system. Due to the fact that generallyonly one connection exists between a client CL (Internet serviceprovider) and a corresponding user B, usually via a telephone line, theuser B and the client CL (Internet provider) form a system to beregarded as consistent at that time. For this reason, the user B fromFIG. 1 is not shown in FIG. 4. An inventive optimisation of the datatransmission to the users B were possible only if the user B had asimultaneous access to different Internet providers. With the currentstate of the art, the present invention permits an optimisation of thedata management and transmission for clients CL operating as Internetproviders if these access e.g. the data required for an interactivecomputer game, with several players via the Internet in accessing othercomputer systems operating as clusters. As shown in FIG. 3, theinvention can also be employed in a consistent computer structure suchas in a personal computer PC. In this case, the central processing unitCPU operates as client and the various data managing means MEM1, MEM2,MEM3 operate as clusters. The data managing means MEM1, MEM2, MEM3 canbe conventional storage means, e.g. non-volatile memories or randomaccess memories, but also special means which e.g. do not only store butalso process data and which can therefore not provide the centralprocessing unit CPU with data without restrictions and at any time.

A cell Z can assume five states, with each status being always possiblebecause the cells Z are not fault tolerant and the network N docs notensure and check data transmissions.

Active status (active): The contents of the cell Z are valid and thecell Z is ready for operation.

Invalid status (invalid): The cell Z is ready for operation but itscontents are no longer current and valid. This can occur, for example,if the cell Z has not carried out data operations because of a technicaldefect or because of not received information.

Inactive status (inactive): The cell Z is not available, e.g. becausedata transmissions to it are permanently lost or because the cell Z haspermanently failed.

Blocked status (blocked): The cell Z processes only certain datatransmissions, such as e.g. the write requests WriteRQ or read requestsReadRQ described below.

Idle status (idle): The cell 2 is ready for operation, but is currentlynot used in the cluster compound CV.

A cell Z contains a certain field F, i.e. a field F with a certain fieldposition FieldID (fieldID) and has a unique position ZellID (cellID)within the corresponding cluster C. The cluster c in turn is identifiedby a unique identification with the fore) ClusterID:ZellID. Each clusterC and each client CL is uniquely identified in the cluster compound CVby an identification ClusterID, ClientID, respectively. No particularrequirement are placed on these identifications, they only have toprovide for a unique identification of the cluster C and the clients CL.

In the following, a number of algorithms will be described in moredetail which ore utilised by the functional operations described furtherbelow which scree for the execution of the invention. This explanationis supplemented by corresponding pseudocodes which are used in thecurrently preferred embodiment of the invention.

In order to be able to assign messages MSG, i.e. data transmissions in aunique manner to individual operations, each message MSG is given aticket number TNr which is generated upon sending. As long as therespective operation is not completed, all clients CL, cells Z, andclusters C involved can associate the message MSG with the correspondingoperation by the ticket number TNr in a unique manner. For obtainingunique ticket numbers TNr, a ticket number TNr can, for example, becombined by the sending time of the message (or from a continuouscounter generated in the cell) and the sender's identification. Due tothe fact that the sendees identification is unique and the sending timesof two messages MSG are different, each message MSG can be assigned therespective operation in a unique manner. Unique ticket numbers TNr,however, can be generated depending on the most different applicationsof the invention in other ways.

Pseudocode for the generation of a ticket number TNr:

function makeNewTicket:longword; begin a:=laufender_zaehler; (continuouscounter) inc(laufender_zaehler); (continuous counter) b:=own_adress;makeNewTicket:=<combination from a and b, e.g. by shifting> end;

If a cluster C receives a message MSG which is destined for anothercluster C, i.e. the ClusterID of the destination address of the messageMSG does not correspond to the address of the receiving cluster C, thenthe receiving cluster C relays the message MSG to the cluster C forwhich the message MSG is intended. The way in which the message MSG isrelayed depends on the actual realisation of the network N, and/or theclusters C, and/or the clients CL, and/or the data transmissionprotocol, and/or corresponding data included in the message MSG. Amessage MSG is also relayed if a cell Z receives the message MSG whichis intended for another cell Z.

Each cell Z contains information on neighbouring cells Z and, on thebasis of this information, checks whether a desired cell Z is locatedwithin the current cluster C. If this is not the case, preferably thecell Z is selected from all neighbouring cells Z of the current clusterC which is the most neighbouring cell with respect to the cell Z. Ifseveral cells Z meet this requirement, a cell Z can be selected atrandom.

Optionally, with each relay of a message MSG a step counter may beincremented by one step. With each step, the respective cluster C sendsa holding response HalteAK (holdingAK) to the sender of the message MSGIn order to inform same that his request RQ is still boing processed. Ifthe sender docs not receive such a holding response HalteAK in thiscase, then the sender can assume that its message MSG has been lost. Thesender can then direct its message MSG e.g. to the last cluster C whichhas sent the last received holding response HalteAK.

There is no reliable method for transmitting messages MSG and forensuring that the messages MSG have been received because the network Nneed not guarantee data transmissions so that messages MSG (e.g.requests RQ and responses AK) can get lost any time.

In order to ensure a higher degree of reliability of the transmission ofcertain data, a pseudoreliable message PSM can be used. In this case,the pseudoreliable message PSM is sent repeatedly until a loss of themessage is improbable. Only then it is assumed that the transmission hasfoiled.

If one assumes a probability of 1/n with which any message MSG can getlost, then a pseudoreliable message PSM must be sent x times so that theprobability p=(2/n)̂x which the message has been lost is sufficientlysmall. With a missing response AK it can then be assumed that therecipient has failed.

Pseudocode for sending a pseudoreliable message PSM:

procedure psm_send(message:TCellMsg; d1,d2,d3:Tadr;next_status:TCellStatus); var i:byte; begin // the psm_ variables aretemporary variables of the // respective cell psm_timeout:=false;psm_next_status:=next_status; psm_ticket:=message.ticket; psm_num:=num;psm_dest[1]:=d1; psm_dest[2]:=d2; psm_dest[3]:=d3; for <all present i>do begin psm_received[i]:=false; psm_sendtime[i]:=curr_time;psm_nrSended[i]:=0; end; <complete further fields of the message, ifapplicable> psm_m:=message; message.dest:=d1; send(message);message.dest:=d2; send(message); message.dest:=d3; send(message);status:=cs_psm_waiting; end;

In order to check whether a cell is waiting for the acknowledgement of apseudoreliable message PSM, the following pseudocode is used:

<process if cell waits for PSM input> begin if (status=cs_psm_waiting)and (message is Aknowledge) then begin  if message.ticket<>psm_ticketthen exit;  sender:=psm_destination(message);  // check if ak_hold  if(sender<>0) and (message.command=ak_hold) then begin <extend waitingtime> exit;  end;  if sender<>0 then begin // note message inpsm_MsgIn[sender] psm_msgIn[sender]:=message;psm_received[sender]:=true; exit; end; //status=cs_psm_waiting end;

The corresponding cell Z must check whether all responses AK lave beenreceived when it executes its update procedure. The corresponding status(cs_psm_waiting) must be processed there. It must then be decidedwhether all responses AK have been received and, if not, if waiting isto be continued:

procedure update; ... case status of: <processing of other statusvalues> cs_psm_waiting: begin if <response to all RQs received> beginstatus:=psm_next_status; exit; end; <check here for timeout, and ifrequired, resend one or several PSM requests> // check for timeout ofall cells if <waiting time for addressees elapsed> then beginstatus:=psm_next_status; psm_timeout:=true; end; end; ... end;

The self check is the central operation in order to ensure theconsistency of all mirrors SP of a compound for a field F. A self checkis initiated by a requesting third party, e.g. a client CL or a clusterC. A mirror SP which carries out a self check causes that the othermirrors SP of the compound also carry out a self check. A self check bya mirror SP can result in a fault correction by this mirror or anothermirror SP. Depending on how unreliable the network actually is (loss ofmessages, lags), it may be impractical to make the PMS virtuallyreliable. The individual operations (such as adding a new mirror, etc.)should be fault tolerant to a certain degree. The case that a message,though classified as not delivered, is delivered nevertheless is veryimprobable with PMS but not impossible. Therefore corresponding faultcorrections must be provided.

If a mirrors SP receives a self check request SelbsttestRQ (selfcheckRQ), it begins a self check under the same ticket number TNr,provided it is not just carrying out a self check which has beeninitialised by another self check request SelbsttestRQ and if the ticketnumber TNr of the currently received self check request SelbsttestRQdiffers from the last received check request SelbsttestRQ.

If a requesting third part sends a read request LeseRQ (readRQ)described below, the execution of a self check is necessary only if therequesting third party receives inconsistent responses AK from thecorresponding mirrors SP of a field F which the requesting third partyintends to read.

The requesting third party compares the responses AK received from themirrors SP and—under the assumption of the above described three mirrorsSP for one field F—with three responses AK accepts the result With tworesponse AK it initiates a self check and accepts the result. With onlyone response AK it initiates a self check and rejects the result.

If a self check request SelbsttestRQ has been received or a self checkhas been initiated by other system-related default e.g. timeout thecorresponding mirror SP must check its own validity and is eitherresponsible for the fault correction itself or instructs another mirrorSP to perform the fault correction. In the selection of a mirror SP forthe fault correction it is to be attempted that always only one mirrorSP carries out the fault correction, even if several mirrors SP performa self check quasi simultaneously, in order to avoid inconsistentconditions.

In this context, the mirror SP sends a validation request ValidierRQ(validationRQ) to all other mirrors SP. The exchange of thecorresponding data is done by using pseudoreliable messages PSM. If noresponse AK is received, the destination is declared unavailable. Thefailed mirror SP is then replaced by a new one.

Pseudocode for carrying out a self check SelbsttestRQ:

A mirror starts a self check if it receives a corresponding message:

rq_start_selfCheck: begin if not used then exit; if (status<>cs_idle)then begin return_msg(m,ak_busy); exit; end; start_selfcheck; exit; end;

Alternatively or supplementary the self check can also be carried outautomatically at certain intervals. For this purpose, the checkingmirror SP sends a corresponding request to all other mirrors SP:

procedure start_selfCheck; var m:TCellMsg; begin <Optional:last_intervall_selfcheck:=current_time> m.cmd:=rq_validate;m.lifecount:=lifeCount; m.data:=data; m.ticket:=makeNewTicket;psm_send(m,mirror[1..nm−1],cs_selfCheck_check); end;

Each cell Z must be capable of responding to validation requests:

rq_validate:  begin if not used then begin if <cell just becomes mirror>and <request from future mirror> then return_msg(m,ak_valid); exit; end;return_msg(m,ak_noMirror); exit; end; if message_is_from_mirror(m) thenbegin <enter own mirrors in message> if message.lifeCount=lifeCount thenreturn_msg(m,ak_valid) else if m.lifeCount>lifeCount then beginlifeCount:=m.lifeCount; <take data from message> return_msg(m,ak_valid);end else return_msg(m,ak_invalidLC); end else return_msg(m,ak_noMirror);exit; end;

After the checking cell Z has either received all responses AK or thetime has elapsed, it reviews the result of the self check:

procedure do_final_selfCheck; var i:integer; m:tcellmsg; s:string; beginsc_res:=′ ′; for i:=1 to nm−1 do begin if (not psm_received[i]) thenbegin sc_res[i]:=′ ′; psm_msgIn[i].cmd:=rq_none; end else begin casepsm_msgIn[i].cmd of ak_valid: sc_res[i]:=′V′; ak_invalidLC:sc_res[i]:=′D′; ak_noMirror: sc_res[i]:=′I′; end; end; end; // reviewresult now: if sc_res=′VV′ then begin  status:=cs_idle;  <furtherinitialisations after completed self check> exit; end; if (sc_res=′VD′)or (sc_res=′DV′) then begin <take over data from D sender>status:=cs_idle; < further initialisations after completed self check >exit; end; if (sc_res=′DD′) then begin <take over data from D sender >status:=cs_idle; exit; end; if (sc_res=′VI′) or (sc_res=′IV′) or(sc_res=′DI′) or (sc_res=′ID′) or (sc_res=′V ′) or (sc_res=′ V′) or(sc_res=′D ′) or (sc_res=′ D′)  then begin <further checks, if required>if (sc_res[1]=′D′) or (sc_res[2]=′D′) then <take over data from Dsender > <Set: no response=′D′> if <this mirror is responsible> then<find a new mirror> else <send order to find a new mirror to responsiblemirror>  exit; end; if (sc_res=′II′) then begin <initialise cell>used:=false; exit; end; if (sc_res=′I ′) or (sc_res=′ I′) then beginstatus:=cs_idle; exit; end; if (sc_res=′ ′) then begin <optional: findnm−1 new mirrors> status:=cs_idle; exit; end; end;

Assuming a mirror compound of three mirrors SP, the following cases canbe distinguished for the receipt of no, one, or two responses AK at themirror SP which sends the validation requests ValidierRQ (validateRQ) tothe two other mirrors SP of the compound, which are listed in the tablebelow, with the incoming responses AK being classified as follows:

“V” (valid): The sending mirror SP accepts the receiving cell Z asmirror SP, and the life counters of the sender and the recipient havethe same value.

“D” (delayed): The sending mirror SP accepts the receiving cell Z asmirror SP, but the life counter of the sender has a lower value than thelife counter of the recipient.

“I” (invalid): The sending mirror SP does not accept the receiving cellZ as mirror SP.

Incoming ase responses AK Status of mirror compound 1) V V Bothreceiving mirrors SP are valid: The mirrors of the compound haveconsistent and current data so that no further operations becomenecessary. 2) V D The requested mirror SP sending a “V” is valid and there- quested mirror SP sending a “D” has a higher life counter value. Therequesting mirrors SP must take over the data of the requested mirror SPsending a “D”. 3) D D Both receiving mirrors SP have life counters withhigher values: The sending mirror SP is invalid and must take over thedata of the mirror SP sending a “D”. 4) V I a) The requested mirror SPsending a “V” receives an “I” from the requested mirror SP sending an“I”: The requesting mirror SP and the requested mirror SP sending a “V”are valid, the requested mirror sending an “I” is invalid and is to beremoved from the compound. The mirror SP with the lowest index must finda new mirror SP. b) The requested mirror SP sending a “V” receives a “V”from the requested mirror SP sending an “I”: The requested mirror SPsending an “I” is inconsistent and must be removed from the group (seedetailed explanation in the following). The mirror SP with the lowestindex must find a new mirror SP. 5) D I The requesting mirror SP takesover the data of the mirror SP sending a “D”. Otherwise the procedurecorresponds to case (4). 6) I I The requesting mirror SP is in theminority and is declared invalid. 7) V− A requested mirror cannottransmit data: The mirrors SP of the two working mirrors SP with thelower index must find a new mirror SP. The failed mirror SP is treatedlike to mirror SP sending an “I” in cases (4) and (5). 8) D− Onerequested mirror cannot transmit data and the other requested mirror SPhas a life counter with a higher value: The requesting mirror SP takesover the data from the working requested mirror SP, and the mirror SPwith the lower index must find a new mirror SP. The failed mirror SP istreated like to mirror SP sending an “I” in cases (4) and (5). 9) I− Onerequested mirror SP is invalid and the other requested mirror SP hasfailed: The requesting mirror SP is in the minority, remains active, butdoes not find new mirrors SP. 10)  — Both requested mirrors SP do nottransmit data or the network connection of the requesting mirror hasfailed: Alternative 1: The requesting mirror SP remains active, but doesnot find new mirrors SP. Alternative 2: The requesting mirror ensures byadditional checks that its connection functions properly and replacesthe two mirrors. The two requested mirrors SP do not receive anyinformation to this effect and will later exclude the requesting mirrorSP. This case must be compensated by the operation DoubleFieldCheckdescribed below.

In those eases in which a new mirror SP is to be found, a new mirror SPis found by one of the remaining mirrors SP, with only one mirror beingallowed to do this task. A mirror must be selected, e.g. the one withthe lower index. The other mirror SP with the higher index does notexecute any operations, but will receive messages MSG after some timewhich indicate the integration of a new mirror SP into the compound.

If a mirror SP has physically failed, it is either possible that norequests RQ were made to the mirror compound in the meantime, i.e. thatits failure has not been noticed and has not brought about any impacts,or that the two other mirrors SP have declared it invalid in themeantime and found a replacement mirror. If a restart operation iscarried out, such a condition can be determined. For this purpose, thestarting mirror SP carries out a self check as previously described.

In the present invention the life counter is a counter which isincremented by integer values. In order to prevent an overflow of thelife counter the life counter of all clients CL, cells Z, and clusters Cis periodically adjusted, i.e. set to a lower common value.

For this purpose, the adjustment is initiated from any mirror SP, e.g.from the mirror SP with the lowest life counter value. All nm mirrors SPof a field F wait for the receipt of all nm−1 responses AK (PSM). Onlyif all nm−1 responses AK are received, the respective mirror SP carriesout an adjustment of the life counter.

When adjusting the life counter, attention has to paid that the intervalbetween two adjustments is selected in such a manner that mirrors SPwhich have been replaced in the meantime do not become valid again upona restart Preferably an additional memory is used for this purpose inwhich the value of the last life counter is stored where a mirror SP hasbeen replaced.

In the case of pseudoreliable messages PSM, too, faults can occur. It istrue that the parameters for pseudoreliable messages PSM can be selectedin such a manner that faults are improbable to such an extent that theyvirtually do not occur in the selected application. This can, however,lead to the result that the application is actually no longerpracticable. With respect to the parameters for pseudoreliable messagesPSM it might be necessary to make compromises so that faults occur dueto faulty pseudoreliable messages PSM, which must be corrected.

For this reason, the communication of the cells Z or the mirrors SP,respectively, among each other must be designed in such a manner thatthese faults remain without consequences or are corrected. This is done,e.g. by the use of a self check SelfCheck.

The operation DoubleFieldCheck described in this section serves tocorrect faults which have been caused by communication errors withpseudoreliable messages PSM. Such faults cause mirror compounds toduplicate, i.e. that more than nm mirrors exist for one field.

The operation DoubleFieldCheck can be carried by one or more mirrors SPin an interval t_DoubleFieldCheck. Each client CL can initiate anoperation DoubleFieldCheck if it receives responses AK from mirrors SPwhose references to other mirrors SP ore not consistent.

The operation DoubleFieldCheck removes additionally generated mirrorcompounds in order to restore the desired condition of nm mirrors SP perone field F. For this purpose, a manager for the operationDoubleFieldCheck is selected. This can be any cell Z (also of the mirrorcompound) or a client CL (e.g. the client which detected the errorsituation). Optionally, the manager sends a request RQ to the network towhich all cells Z respond which are responsible for a certain field F,whereby also additional mirror compounds are detected. The manager thendecides which cells Z belong to the valid mirror compound and sends adelete request DeleteRQ to all other cells Z. Optionally, the managersends a request rq_updateTable to all remaining mirrors SP for updatingtheir mirror tables.

If individual cells Z do not receive the delete request DeleteRQ. theywill be deactivated upon the next self check SelfCheck and/or the nextoperation DoubleFieldCheck.

In order to decide which cells Z belong to the valid mirror compoundvarious algorithms can be employed. In the following, examples for thisare shown which can also be combined.

One possibility is to introduce a generation counter which isincremented each time a new mirror SP is added to the compound. In thecase of mirrors SP with a doubly existing index, the mirror SP with thehigher/lower generation counter will be removed. It is also possible todeclare the mirror compound valid which was last write-accessed.Furthermore, the validity of a mirror compound can also be decided as afunction of any other properties (e.g. geographic position of mirrorsSP). If only one single mirror SP is detected as working properly e.g.by a client CL, it is possible that the error is with this mirror SP andnot with the nm−1 other mirrors SP. In order to exclude thispossibility, an additional safety check should be carried out forensuring the correct function of the single mirror SP before samereplaces the other mirrors SP. It is thereby prevented that the singleoperating mirror SP erroneously activates additional mirrors SP.

With actually only one mirror SP still working, nm−1 new mirrors SP areto be added. First, the working mirror SP must check or ensure,respectively, the function of its own data transmissions. Then nm−1 newmirrors SP are requested by a request rq_needNewCells. All nm−1 newmirrors SP are sent a request to become mirrors. It is thereby notnecessary to evaluate the responses AK immediately, because any faultswill be corrected by later self checks SelfChecks (this sequenceapproximately corresponds to the addition of a new field F, with thedifference that only nm−1 cells Z are found and that the mirror managerin this case is identical with a mirror SP).

In the following sections the data exchange between clients CL, cells Z,and clusters C is described which is preferred for providing theinventive “active” cells. In particular, the following operations areemployed with reference now being made to FIG. 4:

Find operation (find): Finding of a cell Z which includes a desiredfield F.

Read operation (read): A client CL reads the contents of a field F froma mirror SP.

Write operation (write): A client modifies the contents of a field F inall associated mirrors SP.

Add operation (add): Adding of fields F which previously have not beenin the cluster compound CV.

Delete operation (delete): Deletion of a field F in the cluster compoundCV.

By sending a find request FindRQ a client CL determines the position ofthe cells Z which include a desired field F and are thus mirrors SP forthe desired field F. The addresses of these cells Z include both theidentifications ClusterID of the corresponding clusters C as well as theidentifications ZellID of the cells Z themselves.

For obtaining the addresses of the cells Z which are mirrors SP for thedesired field F (e.g. field F8 from FIG. 2), the client CL requests anycluster C, e.g. cluster C6, whether one of its cells Z includes thedesired field F8. If this is the case than the cluster C6 sends thecorresponding cell identification ZellID as well as the clusteridentifications ClusterId of all nm−1 cluster C which include mirrors SPof the desired field F8. As shown in FIG. 4, in this case these are thecell C4 in cluster C1 and the cell Z6 in cluster C3. i.e. in total thecells with the identifications ZellID C1Z4, C3Z6, and C6Z2.

If the requested cluster C, e.g. cluster C4, docs not contain thedesired field F8, the requested cluster C4 finds the cell Z among thecells Z included therein whose field position FeldID comes closest tothe field position FeldID of the desired field F8. For this purpose, thecluster C can, for example, determine the sum of the absolute values ofthe difference between the cell position ZellID and all otherneighbouring cell positions ZellID in order to select the cell Z wherethe absolute value of such a difference is minimal.

Due to the fact that cells Z contain information on neighbouring cells acluster C can be found in this manner which comprises a cell Z with thedesired field F8. The cluster C4 requested by the client CL relays thefind request FindRQ to the cluster C found in this manner. e.g. tocluster C6. This operation is repeated until a desired cell Z has beenfound or until cells Z are not longer found which are neighbouring cellsof the desired cell Z. Preferably, a step counter in incremented uponthe relay of a find request FindRQ. With each increase of the stepcounter, the respective current cluster C sends a holding responseHalteAK (holdingAK) to the client CL in order to inform same that hisrequest FindRQ is still being processed. If the requesting client CLdoes not receive such a holding response HalteAK in this case, then itis to be assumed that its request FindRQ has been lost In this case itis to be preferred that the requesting client CL directs the requestFindRQ to the cluster C again from which it has received the latestholding response HalteAK. The find request FindRQ is successfullycompleted if the requesting client CL receives a destinationidentification ZielID (destinationID) for nm mirrors SP of the field F8.In the example shown in FIG. 4 the destination identification ZielIDwould comprise the cells C1Z4, C3Z6, and C6Z2. If the client CL does notreceive a response AK, the find operation has failed.

In the following, the sequence is described which is executed for readrequests ReadRQ and write request WriteRQ. With the read and writerequests ReadRQ, WriteRQ, shown below it is necessary that therespective client CL knows the identifications of the mirrors SP whichinclude the field F whose data the client CL wants to access. This iscritical insofar as the identifications of the desired mirrors SP canchange any time due to shifting of the mirrors SP. To prevent this, itwould be basically possible to link each find request FindRQ with anoperation LockRQ which prevents changes of the respective compound ofthe desired mirrors SP before the actual read and write requests ReadRQ,WriteRQ have been received by the desired mirrors SP. This would,however, significantly reduce the efficiency of data transmissionsbetween clients CL and clusters C.

For this reason the approach with the preferred embodiment of thepresent invention is as follows. A client CL executes a find operationand notices the received positions of the mirrors SP which include thedesired field F.

If a mirror SP includes read and write requests ReadRQ, WriteRQ with afield position FeldID for the desired field F, which does not correspondto the field position FeklID for the desired field F in the mirror SP,it informs the client CL accordingly. Furthermore, each mirror SP alwaysor alternatively on request returns the positions of the other nm−1mirrors SP to the requesting client CL. In this manner, a mirror SP cancorrect the identifications ID stored in it and, if required, send a newfind request FindRQ.

Pseudocode for carrying out a find request FindRQ:

rq_read: begin if not used then begin <Optional: Return fault message toclient> exit; end; message.data:=data; // Write own mirrors into themessage for i:=1 to nm−1 do message.mirror[i]:=mirror[i]; <completefurther field> <storage of specifications for performance measurement>return_msg(m,ak_read); end;

The request of a client CL is always directed to all nm mirrors SP:

message.command:=rq_read; for i:=1 to nm do beginmessage.destination:=spiegel[i]; <informationen für performancemeasurement in message, if req'd.> send(message); end;

Ideally the client CL buffers its own requests in order to be able toexecute further actions (e.g. other requests) in the meantime, until the1.nm corresponding responses ak_read or a timeout arrives. After theelapse of the waiting time TWLese (TWRead) the client a must check howmany responses have been received and whether the mirror tables of theresponses are consistent:

if nr_al>nm then begin <send request for DoubleFieldCheck to allsenders> exit; end; if nr_ak=nm then begin  if <Mirror tablesconsistent> then <use result from any response message[i] > else <sendrequest for SelfCheck to all senders> exit; end; if nr_ak>nm div 2 thenbegin if <Mirror tables consistent> then <use result from any responsemessage[i] > <send request for SelfCheck to all senders> exit; end; ifnr_ak>0 then <send request for SelfCheck to all senders>

Preferably, the read requests ReadRQ and the write requests WriteRQ aresent via the network N to all clusters C in parallel, but depending onthe network N used any other type of sending is possible.

Each mirror SP, e.g. the cell C1Z4, optionally relays a read requestReadRQ from a client CL to all other mirrors SP, i.e. to the cells C3Z6and C6Z2 in this case, and each mirror SP then sends a response AK tothe client CL. In this case, a mirror SP receives a further read requestReadRQ and because this has the same ticket number TNr as the previouslyreceived read request ReadRQ it will be ignored because this mirror SPhas already sent a response AK to the requesting client CL.

When a read operation is executed the client CL requires the data of acertain field F, e.g. F8. For receiving this data the client CL mustknow the positions of the mirrors SP which are responsible for thisfield F8. This can be enabled by a previously executed find operation inorder to determine the cells C1Z4, C3Z6, end C6Z2 operating as mirrorsSP.

The client CL sends a corresponding read request ReadRQ with a uniqueticket number TNr to all 3 clusters C1, C3, and C6 which include themirrors SP which are responsible for the desired field F8.

The client CL waits for a predetermined application-specific timeinterval TWLese (TWRead) for responses AK of the requested mirrors SPwhich include the desired data. Each mirror SP acknowledges the readrequest ReadRQ with a response AK so that am (i.e. 3 in this case)responses AK arrive at the requesting client CL.

The client CL responds as a function of the type and/or number of theincoming responses AK. With three mirrors SP assumed which areresponsible for the field F of the desired data the following differentstates result. If the client CL receives two or three identicalresponses AK, the result is used. If it receives two different responsesAK or only one response AK the client CL sends a request for a selfcheck to the corresponding mirrors SP. If the client CL receivesdifferent responses AK that response AK is used whose life counter hasthe highest value.

A read request ReadRQ is successful if the client CL receives at leastone response AK and cannot be completed successfully if the client CLdoes not receive a response AK within the predetermined time intervalTWLese or if one or several clusters C signal that they did not find thedesired cell Z. In order to avoid the above problems in sending a readrequest ReadRQ it is to be preferred to execute find requests FindRQ andread requests ReadRQ in a combined manner. In this case the client CLdirects and find/read request Find/ReadRQ to any cluster C and receivesa response AK from same as in the execution of an individual findrequest FindRQ. Here, the response AK does net include the address ID ofthe desired field F but the data of the desired field F.

It is to be considered, however, that a combined find/read requestFind/ReadRQ compared to an initial find request FindRQ for finding thedesired mirrors SP and a subsequent read request RearRQ to the desiredmirrors requires more time, because now all clusters C must process thecombined and thus more extensive find/read request Find/ReadRQ.

In order to change the data of a field F, e.g. field F8, the client CLsends a write request WriteRQ. As in the case of a read request ReadRQ,the client CL must know the positions of the 3 mirrors SP which areresponsible for the desired field F8.

The client CL sends a write request WriteRQ to all 3 mirrors SP of thedesired field F8. Thereupon the data of the desired field F8 or of theassociated cells C1Z4, C3Z6, and C6Z2 operating as mirrors SP ismodified in that all mirrors SP update their data correspondingly. Theneach of the mirrors SP returns a response AK to the requesting clientCL. As soon as all responses AK of the mirrors SP have arrived at theclient CL the write operation is successfully completed.

If at the time at which the client CL sends it write request WriteRQanother write request WriteRQ to the desired cells C1Z4, C3C6, and C6Z2is already being executed the client CL receives a correspondingresponse AK which indicates that the write request WriteRQ has failedand the desired cells C1Z4, C3C6, and C6Z2 are in a locked state. Awrite request WriteRQ has also not been completely successfully if therequesting client CL receives less than nm responses AK, i.e. in thepresent case less than 3 responses AK.

The synchronisation which is required for a write request WriteRQ iscarried out by the involved mirrors SP in order to ensure that all nmmirrors SP are updated with the same data. If a mirror SP receives awrite request WriteRQ, it sends this write request WriteRQ to all othernm−1 mirrors SP. Only if the sending mirror SP receives a response AKfrom all other nm−1 mirrors SP the write request WriteRQ is executed.Thereby the write request WriteRQ received by the mirror SP can be senteither from a client CL or from another mirror SP of the same compound.

If a mirror SP receives another write request WriteRQ from a mirror SPwith a lower index, previously arrived write requests WriteRQ areoverwritten in all mirrors. Moreover, a mirror SP does not acceptfurther write requests WriteRQ from a client CL if already a not fullyexecuted write request WriteRQ has arrived from another mirror SP orclient CL.

It is possible to execute find requests FindRQ and write request WriteRQin a combined manner as find/write requests Find/WriteRQ, but it is tobe checked whether the additional time requirement is reasonable.

An add request AddRQ serves to integrate a field F which is not yetincluded in the cluster compound CV into the cluster compound CV. Suchan add request AddRQ can be sent from a cluster C or a client CL.

An individual cell, e.g. the cell C2Z6 from FIG. 4, receives an addrequest AddRQ from the client CL to work as a mirror manager und tointegrate nm−1 (i.e. 2) new mirrors SP into the cluster compound CV. Inthe currently preferred embodiment of the invention, one cell Z isalways selected a mirror manager which itself is no mirror SP. However,embodiments of the invention are possible where the mirror manageritself is also a mirror. The cell C2Z6 working as the mirror managersends an odd request AddRQ for 2 mirrors into the network N. The addrequest AddRQ is relayed from cluster C to cluster C in the clustercompound CV, e.g. from cluster C2 to cluster C3, with the number of themirrors SP to be added being decremented upon relay of the add requestAddRQ, when the last requested cluster C has provided a cell Z.

The last requested cluster C sends the identifications ZellID of thecells Z which are considered as mirrors SP to the cell C2Z6 working asthe mirror manager. The cell C2Z6 working as the mirror manager thensends a corresponding response AK to all cells C3Z1 and C1Z2 which arepossible as mirrors SP, preferably a pseudoreliable message PSM whichinstructs them to become mirrors SP. Then the cell C2Z6 working as themirror manager returns a corresponding response AK to the requestingclient CL An add request AddRQ is not completed successfully if noresponse AK or a negative response AK is returned from the cell C2Z6working as the mirror manager.

Pseudocode for the execution of an add request AddRQ:

rq_addField: begin if (status<>cs_idle) or (used) then exit;message.command:=ak_addField; <store additional values for request, e.g. data, field position, etc. for later relay to the mirrors SP>fieldpos:=message.dataFieldPos; data:=message.data;mirManClient:=message.sender;repeat_rq_emptycells:=c_repeat_rq_emptycells;psm_send(message,message.sender,cs_mirrorManager1); exit; end;

The execution of an odd request AddRQ docs not guarantee that nm mirrorsSP are available for a desired field F, but that either nm mirrors SPare available or after the elapse of a predetermined time t no mirrorsSP at all are available for the desired field F.

If less than nm new mirrors SP exist after the execution of an addrequest AddRQ this can only occur if the pseudoreliable messages PMSMused in the add request AddRQ provide wrong results. Such faults arecorrected by later self checks of the mirrors SP.

A mirror request SpiegelRQ (MirrorRQ) is a special case of an oddrequest AddRQ, wherein a cell Z which will be referred to a manager inthe following requests a single mirror SP. The manager sends the requestto the cells Z which are possible as mirrors SP to become new mirrorsSP.

If the manager sends a mirror request SpiegelRQ into the network N, awaiting time WT is recorded from this moment on until responses AK ofthe cells Z possible as mirrors SP arrive at the manager. Each cluster Cwhich receives the mirror request SpiegelRQ and can provide storagespace sends a corresponding response AK to the manager and providesstorage space which is kept free to be integrated into the clustercompound CV in the form of a cell Z or a mirror SP, respectively. If acluster C cannot provide a mirror SP, it relays the mirror requestSpiegelRQ to other clusters C. When the manager has received acorresponding response AK of a new mirror SP it will enter this in amirror table. If a cell Z which is possible as a mirror SP received amessage MSO from the manager prior to the elapse of the time interval wtthat no more mirrors SP are required, it is released again and themirror request SpiegelRQ is rejected.

If a timeout occurs in one of the requested cells Z, i.e. the timeinterval wt of the mirror request SpiegelRQ for this cell Z has elapsed,then a new cell Z which is possible as a mirror is found. This operationis repeated several times or until cells Z possible as mirrors haveresponded. Cells Z which have made themselves available as possiblemirrors SP and whose responses AK arrive at the manager after theassigned time interval wt will be ignored by same.

Pseudocode for carrying out a mirror request SpiegelRQ:

cs_getOneNewMirror0: begin message.command:=rq_needEmptyCells; <selectdestination cluster> message.ticket:=makeNewTicket;psm_send(r,r.dest,cs_getOneNewMirror1); exit;  end;

Either the mirror SP receives a response AK or the mirror requestSpiegelRQ becomes invalid:

cs_getOneNewMirror1: begin if psm_timeout then begin status:=cs_idle;exit; end; possibleMirror:=<received address>message.command:=rq_singlebecomeMirror; <write own address and addr. ofthe other valid mirror into the message>psm_send(r,possibleMirror[1],cs_getOneNewMirror2); exit; end;

The still not used mirror SP receives the mirror request SpiegelRQ tobecome a mirror which it processes with the following pseudocode:

rq_singlebecomeMirror: begin if <request from same mirrorl> and <ticketin agreement> then begin <return acknowledgement> exit; end; if usedthen exit; < return acknowledgement> <notice MirrorManager and ticket><Send rq_addMirror to all old mirrors> exit; end;

Now this mirror candidate sends a request to all nm−1 old mirrors SP tobe accepted as a mirror (rq_addMirror). Because the old mirrors SP mustcertify this mutually the cell might have to wait longer than normal fora response to the message. A mirror SP which has received this requestenquires all other nm−2 mirrors SP whether these have received thisrequest, too (recertify). Only if this is the case, the mirror SPreplies with a corresponding response ak_addmirror and updates its ownmirror table:

rq_addMirror:  begin <set flags, if req'd to accept messages > if<request is from mirror l> then begin <update message with data corr. toLifeCount> <send acknowledgement ak_akkMirror> exit; end; if <message isfrom mirror candidate (anew)> then exit; if <Status is not correct> thenexit; if not <mirror to be replaced is known> then exit; <furtherplausibility checks, if req'd.> <Send request to all nm−2 mirrorswhether message received, too> end;

Finally, the mirror candidate updates its data:

cs_becomeSingleNewMirror1: begin if not <all nm−1 old mirrors have sentak_addMirror> then begin status:=cs_idle; exit; end; <take over mirrordata> <take over data (field value etc.)> <establish own index>used:=true; status:=cs_idle; exit; end;

In order to remove a field F from the cluster compound CV, a client CLor a cluster C, for example, sends a delete request DeleteRQ to all nmmirrors SP associated with the field F. A delete request DeleteRQensures that either all nm mirrors SP are removed or, in the ease of anot successful execution of the delete request DeleteRQ, that no mirrorSP is removed in order to ensure consistent data in the cluster compoundCV.

Optionally, each mirror SP which receives a delete request DelcteRQrelays it to the other nm−1 mirrors SP. A mirror which receives a deleterequest DeleteRQ “deletes” itself, i.e. the respective cell Z changesinto an idle state and informs the sender of the delete request DeleteRQabout this with a corresponding response AK.

A delete request DeleteRQ is executed successfully if the senderreceives nm responses AK according to the which nm mirrors SP of thefield F have deleted themselves. If the sender docs not receive aresponse AK after the elapse of a predetermined time interval, accordingto which the nm mirrors SP of the field F have deleted themselves, thedelete request DeleteRQ has failed.

Pseudocode for the execution of a delete request DeleteRQ:

rq_delete: begin if status<>cs_idle then exit; if used and(message.ticket=lmticket) and (message.sender=lmAdr) then beginreturn_msg(message,ak_delete); exit; end; return_msg(m,ak_delete);lmTicket:=message.ticket; lmAdr:=message.sender; <Initialise cell in theinitial state> used:=false; status:=cs_idle; exit; end;

Shift operations are used for assigning individual mirrors SP of amirror compound to other cells Z which then replace the previous mirrorsSP accordingly. There are various reasons which necessitate shiftoperations:

Failure of a cluster C or individual cells Z

Removal of a cluster C from a cluster compound

Inadequate data transmission performance of a cluster C

Application-specific causes/reasons.

The shifting of mirrors SP upon the request of new mirrors SP hasalready been described above. If a cluster C is to be removed from thecluster compound CV, for example, when a cluster C is to be shut down orto be used for other tasks in the network N, the data of its activecells Z, i.e. of the cells Z which operate as mirrors SP, must beshifted to other clusters C. In this case the cluster C to be removedinitiates the shifting of the data or of the mirrors SP, respectively,of the individual mirror compounds (as described above).

For initiating shift operations due to an inadequate data transmissionperformance, the data transmission performance of the clusters C and/orthe cells Z is checked during operation. For this purpose, the preferredembodiment of the present invention uses a counter for each mirror SPand/or each cell Z which determines the transmission duration withpseudoreliable messages PSM. Optionally, a timer is implemented whichdetermines the average data transmission duration, with a common timebasis being required in this case. Preferably, each cluster C determinesthe data transmission performances of its cells Z. Mirrors SP or cellsZ, respectively, whose data transmission durations exceed certain limitsare shifted.

The evaluation of the data transmission performance with respect to thedata transmission duration, however, is to be understood as an exampleonly, and any desired parameter of data transmission performances whichis suitable for the application of the invention can be checked for aninitiation of shift operations by means of known methods. For example,the computing performance of individual cells Z and/or clusters C, orthe performance of individual areas of the network N could be checked.

If such an inadequate data transmission performance has been determinedfor a mirror SP, e.g. cell C6Z2 from FIG. 2, a single mirror SP from thecorresponding compound becomes the manager, e.g. cell C1Z4. The managerC1Z4 sends a request RQ, preferably with a pseudo-reliable message PSM,to all other two cells C3Z6 and C6Z2 of the compound operating asmirrors SP to remove the corresponding mirror SP (C6Z2). This makesitself invalid or is declared invalid by the corresponding cluster C6.

Thereupon the manager C1Z4 requests a new mirror SP in the clustercompound CV, whereby contrary to the above described replacement for amirror SP additional requirements can be placed on the new mirror SP,preferably requirements with respect to the data transmissionperformance. The new mirror SP is integrated into the mirror compound inthe above described manner.

In order to ensure that all mirrors SP have received information on theshift operation the manager sends a request RQ (preferably with apseudoreliable message PSM) for cancelling the shift operation if it hasnot received a corresponding response AK from all nm−1 mirrors SP. Inthis case, the shift operation could not be completed successfully.

The operations described above in conjunction wife cells Z and mirrorsSP are also applicable to operations with respect to the inventivecluster C. For this reason, a detailed description of the operations foradding, removing, shifting, and deactivating of individual clusters C isdispensed with.

Although the present invention has been described in terms of specificembodiments, it is anticipated that alterations and modificationsthereof will no doubt become apparent to those skilled in the all it istherefore intended that the following claims to interpreted as coveringall such alterations and modifications as fall within the true spiritand scope of the invention.

What is claimed is:
 1. A method for copying data over a network byreceiving data from or sending data to at least one of a plurality ofdata storage devices in which data is stored redundantly as a functionof measured data transmission performance between at least one computerunit that stores at least one complete file of data, each file includinga plurality of individual pieces of data, the pieces containing pasts ofthe file, and the plurality of data storage devices, comprising:receiving, in the at least one data storage device, at least one pieceof data stored by a computer unit in a redundant manner in at least twodata storage devices as a function of a measured data transmissionperformance between the at least one data storage device and the atleast one computer unit; storing, in the at least one data storagedevice, the received piece of data; measuring, by the at least one datastorage device, a data transmission performance between the at least onedata storage device and another one of the plurality of data storagedevices; and sending, from the at least one data storage device to theanother data storage device, a copy of the received piece of data forredundant storage as a function of the measured data transmissionperformance between the data storage devices and independently of anaccess of the at least one computer unit.
 2. A method for distributing acomplete data file among a plurality of devices connected by a computernetwork, the method comprising: transmitting a request from a first oneof the plurality of devices for a requested individual data subset ofthe complete data file to a client connected to the computer network,wherein the client identities at least two of the plurality of deviceswhere the requested individual date subset of the complete data file isstored; receiving on the first one of the plurality of devices therequested individual data subset of the complete data file from a secondone of the plurality of devices, wherein the second one of the pluralityof devices is one of the one or more of the plurality of devicesidentified by the client and wherein the second one of the plurality ofthe devices is selected from the one or more of the plurality of devicesidentified by the client based on a function of measured datatransmission performance; and storing the requested individual datasubset of the complete data file in the first one of the plurality ofdevices.
 3. The method of claim 2, wherein the client is an internetprovider, a networked computer, or a server.
 4. The method of claim 2,wherein the client is one or more of the plurality of devices connectedby the computer network.
 5. The method of claim 2, wherein one or moreof the plurality of devices may be removed from the computer networkwithout interruption of the method.
 6. The method of claim 5, whereinthe client updates the identities of the one or more of the plurality ofdevices where the requested individual data subset of the complete datafile is stored after the one or more of the plurality of devices isremoved.
 7. The method of claim 2, wherein one or more additionaldevices may be connected to the network and added to the plurality ofdevices without interruption of the method.
 8. The method of claim 7,wherein the client updates the identities of the one or more of theplurality of devices where fee requested individual data subset of thecomplete data file is stored after the one or more additional devicesare added.
 9. The method of claim 2, further comprising: determiningwhether the stored individual data subset of the complete data file isvalid; and if the stored individual data subset of the complete datafile is invalid, sending the requested individual data subset of thecomplete data file from a third one of the plurality of devices to thefirst one of the plurality of devices, wherein the third one of theplurality of devices is one of the one or more of the plurality ofdevices identified by the client and wherein the third one of theplurality of the devices is selected from the one or more of theplurality of devices identified by the client based on a function ofmeasured data transmission performance.
 10. The method of claim 2,further comprising: transmitting a plurality of individual data subsetsof the complete data file to one or more of the plurality of devices forstorage therein.
 11. A device connected to a computer network fortransmitting and receiving a complete data file to a plurality ofdevices connected to the network, wherein the complete data file isdivided into a plurality of individual data subsets, wherein one or moreof the individual data subsets is stored in the device, and wherein eachof the individual data subsets of the complete data file is stored in atleast two of the plurality of devices, the device comprising: a memoryconfigured to store data received by the device; and a processor coupledto the memory, configured to: request from a client a requested datasubset of the complete data file; receive from one of the plurality ofdevices the requested date subset of the complete data file, wherein theclient determines one or more of the plurality of devices where therequested data subset of the complete data file is stored and identifiesthe one of the plurality of devices from the determined one or more ofthe plurality of devices based on a function of measured datatransmission performance; store the received data subset of the completedata file in said memory; and send to another one of the plurality ofdevices the received data subset of the complete data file.
 12. Thedevice of claim 11, wherein the client is an internet provider, anetworked computer, or a server.
 13. The device of claim 11, wherein theclient is the device.
 14. The device of claim 11, wherein the functionof measured data transmission performance is between the device and theone of the plurality of devices.
 15. The device of claim 11, wherein thefunction of measured data transmission performance is between one of thedevice and the one of the plurality of devices and the client.
 16. Anon-transitory computer-readable medium storing computer readableinstructions for causing the distribution and redundant storage of acomplete data file across a plurality of data storage devices connectedby a computer network the computer-readable instructions comprising:instructions for receiving, in a first date storage device from one ofsaid plurality of data storage device, a data subset of the completedata file that is stored in at least two of said plurality of datastorage devices; instructions for storing, in said first data storagedevice, said data subset of the complete data file; instructions formeasuring, by said first data storage device, a data transmissionperformance between said first data storage device and at least one ofsaid plurality of data storage devices; and instructions for sending,from said first data storage device to a second data storage device, acopy of said data subset of the complete data file for redundant storageas a function of the measured data transmission performance between saidfirst data storage device and said second data storage device andindependently of any request for a copy of said data subset of thecomplete data file from said second data storage device.
 17. Thenon-transitory computer-readable medium according to claim 16, furthercomprising instructions for causing a plurality of data subsets of saidcomplete data file to be received and stored in said first data storagedevice a complete copy of said complete data file.
 18. Thenon-transitory computer-readable medium according to claim 16, furthercomprising instructions for detecting, by said first data storagedevice, a plurality of predetermined parameters for data transmissionsbetween said first data storage device and at least a second datastorage device.
 19. The non-transitory computer-readable mediumaccording to claim 16, wherein the plurality of predetermined parametersincludes at least one of a transmission duration, a fault rate, and aduration of data processing operation by said first data storage deviceprior to a data transmission.
 20. The non-transitory computer-readablemedium according to claim 16, further comprising instructions fordetecting, by said first data storage device, a plurality ofpredetermined parameters for data transmissions between said first datastorage device and at least one computer unit.
 21. The non-transitorycomputer-readable medium according to claim 20, wherein the plurality ofpredetermined parameters includes at least one of a transmissionduration and a fault rate.